package com.entrogy.utils;

import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * Description:时间相关的Utils
 *
 * @author xlr
 *
 */

public class DateUtils {
	// 生成当天的指定时间的date
	public static Date getT(int a, int b, int c) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.HOUR_OF_DAY, a);
		calendar.set(Calendar.MINUTE, b);
		calendar.set(Calendar.SECOND, c);
		return calendar.getTime();// 今天凌晨的时间
	}

	/**
	 *用当天的日期的long型字符数串减去昨天日期long型字符数串
	 * 其中：
	 *  86400000L，它的意思是说1天的时间=24小时 x 60分钟 x 60秒 x 1000毫秒 单位是L。
	 * @return
	 */
	public static String getYesterdayByDate(){
		//实例化当天的日期
		Date today = new Date();
		//用当天的日期减去昨天的日期
		Date yesterdayDate = new Date(today.getTime()-86400000L);
		String yesterday = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(yesterdayDate);
		return yesterday;
	}

	/**
	 * 当前日期 时间
	 * @return
	 */
	public static String GetNowDate(){
		String temp_str="";
		Date dt = new Date();
		//最后的aa表示“上午”或“下午”    HH表示24小时制    如果换成hh表示12小时制
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		temp_str=sdf.format(dt);
		return temp_str;
	}


	/**
	 * 将时间戳转换为时间
	 * @return
	 */
	public static String stampToDate(String s){
		String res;
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		long lt = new Long(s);
		Date date = new Date(lt);
		res = simpleDateFormat.format(date);
		return res;
	}

	/**
	 *  获取当天0dian
	 * @return
	 */
	public static String GetNowDate2() {
		String temp_str="";
		Date dt = new Date();
		//最后的aa表示“上午”或“下午”    HH表示24小时制    如果换成hh表示12小时制
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
		temp_str=sdf.format(dt);
		return temp_str;
	}
	/**
	 * 获取当前时间前size分钟
	 * @param
	 * @return
	 */
	public static String getCurrentTime(int size){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Calendar beforeTime = Calendar.getInstance();
		beforeTime.add(Calendar.MINUTE, size);// 3分钟之前的时间
		Date beforeD = beforeTime.getTime();
		String time = sdf.format(beforeD);
		return time;
	}

	/**
	 *  返回当天的星期几
	 * @return
	 */
	public static String getWek() {
		Date date=new Date();
		SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");
		return dateFm.format(date);
	}

	/**
	 *   比较大小
	 * @param a
	 * @param b
	 * @return
	 */
    public  static  Boolean  compare(String a,String b){
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			long l1=formatter.parse(a).getTime();
			long l2=formatter.parse(b).getTime();
			if (l1>l2){
				return true;
			}
			else{
				return false;
			}
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return  false;
		}

	}

	/**
	 *  Date转String
	 * @param data
	 * @param yyyy-MM-dd HH:mm:ss
	 * @return
	 */
	public static String dateToString(Date data) {
		return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(data);
	}

	/**
	 *  根据日期获取周几
	 * @param datetime
	 * @return
	 */
	public static String getWeekOfDate(String datetime) {
		SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
		String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		Calendar cal = Calendar.getInstance(); // 获得一个日历
		Date datet = null;
		try {
			datet = f.parse(datetime);
			cal.setTime(datet);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。
		if (w < 0)
			w = 0;
		return weekDays[w];

	}

	/**
	 * 判断是否是当月
	 * @param
	 * @param Time
	 * @return
	 */
	public static boolean isThisTime(String Time) {
		SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");//设置日期格式
		String date=df.format(new Date());
		String MM=date.substring(4, 6);//截取系统月份
		String mm=Time.substring(5,7);//要判断的月份，需要自己截取处理
		if(MM.equals(mm)){
			return true;
		}else{
			return false;
		}

	}


}

